/**

 @Name：layuiAdmin iframe版核心模块
 @Author：贤心
 @Site：http://www.layui.com/admin/
 @License：LPPL
    
 */

layui.define('view', function(exports) {
	var $ = layui.jquery,
		laytpl = layui.laytpl,
		element = layui.element,
		setter = layui.setter,
		view = layui.view,
		device = layui.device()

		,
		$win = $(window),
		$body = $('body'),
		container = $('#' + setter.container)

		,
		SHOW = 'layui-show',
		HIDE = 'layui-hide',
		THIS = 'layui-this',
		DISABLED = 'layui-disabled',
		TEMP = 'template',
		APP_BODY = '#LAY_app_body',
		APP_FLEXIBLE = 'LAY_app_flexible',
		FILTER_TAB_TBAS = 'layadmin-layout-tabs',
		APP_SPREAD_SM = 'layadmin-side-spread-sm',
		TABS_BODY = 'layadmin-tabsbody-item',
		ICON_SHRINK = 'layui-icon-shrink-right',
		ICON_SPREAD = 'layui-icon-spread-left',
		SIDE_SHRINK = 'layadmin-side-shrink',
		SIDE_MENU = 'LAY-system-side-menu'

		//通用方法
		,
		admin = {
			v: '1.0.0 std',
			//base_url: 'http://www.zhaocaiwang.com/zcw-app/',
			//base_ws: 'ws://www.zhaocaiwang.com/zcw-app/chat/',
			base_url: 'http://127.0.0.1/zcw-app/',
			base_ws: 'ws://127.0.0.1/zcw-app/chat/',
			req: view.req

				//发送验证码
				,
			sendAuthCode: function(options) {
					options = $.extend({
						seconds: 60,
						elemPhone: '#LAY_phone',
						elemVercode: '#LAY_vercode'
					}, options);

					var seconds = options.seconds,
						btn = $(options.elem),
						token = null,
						timer, countDown = function(loop) {
							seconds--;
							if (seconds < 0) {
								btn.removeClass(DISABLED).html('获取验证码');
								seconds = options.seconds;
								clearInterval(timer);
							} else {
								btn.addClass(DISABLED).html(seconds + '秒后重获');
							}

							if (!loop) {
								timer = setInterval(function() {
									countDown(true);
								}, 1000);
							}
						};

					options.elemPhone = $(options.elemPhone);
					options.elemVercode = $(options.elemVercode);

					btn.on('click', function() {
						var elemPhone = options.elemPhone,
							value = elemPhone.val();

						if (seconds !== options.seconds || $(this).hasClass(DISABLED)) return;

						if (!/^1\d{10}$/.test(value)) {
							elemPhone.focus();
							return layer.msg('请输入正确的手机号')
						};

						if (typeof options.ajax === 'object') {
							var success = options.ajax.success;
							delete options.ajax.success;
						}

						admin.req($.extend(true, {
							url: '/auth/code',
							type: 'get',
							data: {
								phone: value
							},
							success: function(res) {
								layer.msg('验证码已发送至你的手机，请注意查收', {
									icon: 1,
									shade: 0
								});
								options.elemVercode.focus();
								countDown();
								success && success(res);
							}
						}, options.ajax));
					});
				}

				//屏幕类型
				,
			screen: function() {
					var width = $win.width()
					if (width >= 1200) {
						return 3; //大屏幕
					} else if (width >= 992) {
						return 2; //中屏幕
					} else if (width >= 768) {
						return 1; //小屏幕
					} else {
						return 0; //超小屏幕
					}
				}

				//清除本地 token，并跳转到登入页
				,
			exit: function(callback) {
					view.req({
						type: "POST",
						url: admin.base_url + "back/logout",
						success: function(res) {
							if (res && res.code == "0") {
								layer.msg("您已退出系统", {
									time: 1500
								}, function() {
									view.exit(callback);
								});
							}
						}
					});
				}

				//侧边伸缩
				,
			sideFlexible: function(status) {
					var app = container,
						iconElem = $('#' + APP_FLEXIBLE),
						screen = admin.screen();

					//设置状态，PC：默认展开、移动：默认收缩
					if (status === 'spread') {
						//切换到展开状态的 icon，箭头：←
						iconElem.removeClass(ICON_SPREAD).addClass(ICON_SHRINK);

						//移动：从左到右位移；PC：清除多余选择器恢复默认
						if (screen < 2) {
							app.addClass(APP_SPREAD_SM);
						} else {
							app.removeClass(APP_SPREAD_SM);
						}

						app.removeClass(SIDE_SHRINK)
					} else {
						//切换到搜索状态的 icon，箭头：→
						iconElem.removeClass(ICON_SHRINK).addClass(ICON_SPREAD);

						//移动：清除多余选择器恢复默认；PC：从右往左收缩
						if (screen < 2) {
							app.removeClass(SIDE_SHRINK);
						} else {
							app.addClass(SIDE_SHRINK);
						}

						app.removeClass(APP_SPREAD_SM)
					}

					layui.event.call(this, setter.MOD_NAME, 'side({*})', {
						status: status
					});
				}

				//xss 转义
				,
			escape: function(html) {
					return String(html || '').replace(/&(?!#?[a-zA-Z0-9]+;)/g, '&amp;')
						.replace(/</g, '&lt;').replace(/>/g, '&gt;')
						.replace(/'/g, '&#39;').replace(/"/g, '&quot;');
				}
				//事件监听
				,
			on: function(events, callback) {
					return layui.onevent.call(this, setter.MOD_NAME, events, callback);
				}

				//弹出面板
				,
			popup: view.popup

				//右侧面板
				,
			popupRight: function(options) {
					//layer.close(admin.popup.index);
					return admin.popup.index = layer.open($.extend({
						type: 1,
						id: 'LAY_adminPopupR',
						anim: -1,
						title: false,
						closeBtn: false,
						offset: 'r',
						shade: 0.1,
						shadeClose: true,
						skin: 'layui-anim layui-anim-rl layui-layer-adminRight',
						area: '300px'
					}, options));
				}

				//主题设置
				,
			theme: function(options) {
					var theme = setter.theme,
						local = layui.data(setter.tableName),
						id = 'LAY_layadmin_theme',
						style = document.createElement('style'),
						styleText = laytpl([
							//主题色
							'.layui-side-menu,', '.layadmin-pagetabs .layui-tab-title li:after,',
							'.layadmin-pagetabs .layui-tab-title li.layui-this:after,', '.layui-layer-admin .layui-layer-title,',
							'.layadmin-side-shrink .layui-side-menu .layui-nav>.layui-nav-item>.layui-nav-child',
							'{background-color:{{d.color.main}} !important;}'

							//选中色
							, '.layui-nav-tree .layui-this,', '.layui-nav-tree .layui-this>a,',
							'.layui-nav-tree .layui-nav-child dd.layui-this,', '.layui-nav-tree .layui-nav-child dd.layui-this a',
							'{background-color:{{d.color.selected}} !important;}'

							//logo
							//,'.layui-layout-admin .layui-logo{background-color:{{d.color.logo || d.color.main}} !important;}'

							//头部色
							, '{{# if(d.color.header){ }}', '.layui-layout-admin .layui-header{background-color:{{ d.color.header }};}',
							'.layui-layout-admin .layui-header a,', '.layui-layout-admin .layui-header a cite{color: #f8f8f8;}',
							'.layui-layout-admin .layui-header a:hover{color: #fff;}',
							'.layui-layout-admin .layui-header .layui-nav .layui-nav-more{border-top-color: #fbfbfb;}',
							'.layui-layout-admin .layui-header .layui-nav .layui-nav-mored{border-color: transparent; border-bottom-color: #fbfbfb;}',
							'.layui-layout-admin .layui-header .layui-nav .layui-this:after, .layui-layout-admin .layui-header .layui-nav-bar{background-color: #fff; background-color: rgba(255,255,255,.5);}',
							'.layadmin-pagetabs .layui-tab-title li:after{display: none;}', '{{# } }}'
						].join('')).render(options = $.extend({}, local.theme, options)),
						styleElem = document.getElementById(id);

					//添加主题样式
					if ('styleSheet' in style) {
						style.setAttribute('type', 'text/css');
						style.styleSheet.cssText = styleText;
					} else {
						style.innerHTML = styleText;
					}
					style.id = id;

					styleElem && $body[0].removeChild(styleElem);
					$body[0].appendChild(style);
					$body.attr('layadmin-themealias', options.color.alias);

					//本地存储记录
					local.theme = local.theme || {};
					layui.each(options, function(key, value) {
						local.theme[key] = value;
					});
					layui.data(setter.tableName, {
						key: 'theme',
						value: local.theme
					});
				}

				//初始化主题
				,
			initTheme: function(index) {
					var theme = setter.theme;
					index = index || 0;
					if (theme.color[index]) {
						theme.color[index].index = index;
						admin.theme({
							color: theme.color[index]
						});
					}
				}

				//记录最近一次点击的页面标签数据
				,
			tabsPage: {}

			//获取页面标签主体元素
			,
			tabsBody: function(index) {
					return $(APP_BODY).find('.' + TABS_BODY).eq(index || 0);
				}

				//切换页面标签主体
				,
			tabsBodyChange: function(index, options) {
					options = options || {};

					admin.tabsBody(index).addClass(SHOW).siblings().removeClass(SHOW);
					events.rollPage('auto', index);

					//执行 {setter.MOD_NAME}.tabsPage 下的事件
					layui.event.call(this, setter.MOD_NAME, 'tabsPage({*})', {
						url: options.url,
						text: options.text
					});
				}

				//resize事件管理
				,
			resize: function(fn) {
				var router = layui.router(),
					key = router.path.join('-');
				$win.off('resize', admin.resizeFn[key]);
				fn(), admin.resizeFn[key] = fn;
				$win.on('resize', admin.resizeFn[key]);
			},
			resizeFn: {},
			runResize: function() {
				var router = layui.router(),
					key = router.path.join('-');
				admin.resizeFn[key] && admin.resizeFn[key]();
			},
			delResize: function() {
					var router = layui.router(),
						key = router.path.join('-');
					$win.off('resize', admin.resizeFn[key])
					delete admin.resizeFn[key];
				}

				//关闭当前 pageTabs
				,
			closeThisTabs: function() {
				if (!admin.tabsPage.index) return;
				$(TABS_HEADER).eq(admin.tabsPage.index).find('.layui-tab-close').trigger('click');
			}

			//……
		};

	//事件
	var events = admin.events = {
		//伸缩
		flexible: function(othis) {
				var iconElem = othis.find('#' + APP_FLEXIBLE),
					isSpread = iconElem.hasClass(ICON_SPREAD);
				admin.sideFlexible(isSpread ? 'spread' : null);
			}

			//刷新
			,
		refresh: function() {
				var ELEM_IFRAME = '.layadmin-iframe',
					length = $('.' + TABS_BODY).length;

				if (admin.tabsPage.index >= length) {
					admin.tabsPage.index = length - 1;
				}

				var iframe = admin.tabsBody(admin.tabsPage.index).find(ELEM_IFRAME);
				iframe[0].contentWindow.location.reload(true);
			}

			//输入框搜索
			,
		serach: function(othis) {
				othis.off('keypress').on('keypress', function(e) {
					if (!this.value.replace(/\s/g, '')) return;
					//回车跳转
					if (e.keyCode === 13) {
						var href = othis.attr('lay-action'),
							text = othis.attr('lay-text') || '搜索';

						href = href + this.value;
						text = text + ' <span style="color: #FF5722;">' + admin.escape(this.value) + '</span>';

						//打开标签页
						layui.index.openTabsPage(href, text);

						//如果搜索关键词已经打开，则刷新页面即可
						events.serach.keys || (events.serach.keys = {});
						events.serach.keys[admin.tabsPage.index] = this.value;
						if (this.value === events.serach.keys[admin.tabsPage.index]) {
							events.refresh(othis);
						}

						//清空输入框
						this.value = '';
					}
				});
			}

			//点击消息
			,
		message: function(othis) {
				othis.find('.layui-badge-dot').remove();
			}

			//弹出主题面板
			,
		theme: function() {
				admin.popupRight({
					id: 'LAY_adminPopupTheme',
					success: function() {
						view(this.id).render('system/theme')
					}
				});
			}

			//便签
			,
		note: function(othis) {
				var mobile = admin.screen() < 2,
					note = layui.data(setter.tableName).note;

				events.note.index = admin.popup({
					title: '便签',
					shade: 0,
					offset: [
						'41px', (mobile ? null : (othis.offset().left - 250) + 'px')
					],
					anim: -1,
					id: 'LAY_adminNote',
					skin: 'layadmin-note layui-anim layui-anim-upbit',
					content: '<textarea placeholder="内容"></textarea>',
					resize: false,
					success: function(layero, index) {
						var textarea = layero.find('textarea'),
							value = note === undefined ? '便签中的内容会存储在本地，这样即便你关掉了浏览器，在下次打开时，依然会读取到上一次的记录。是个非常小巧实用的本地备忘录' : note;

						textarea.val(value).focus().on('keyup', function() {
							layui.data(setter.tableName, {
								key: 'note',
								value: this.value
							});
						});
					}
				})
			}

			//全屏
			,
		fullscreen: function(othis) {
				var SCREEN_FULL = 'layui-icon-screen-full',
					SCREEN_REST = 'layui-icon-screen-restore',
					iconElem = othis.children("i");

				if (iconElem.hasClass(SCREEN_FULL)) {
					var elem = document.body;
					if (elem.webkitRequestFullScreen) {
						elem.webkitRequestFullScreen();
					} else if (elem.mozRequestFullScreen) {
						elem.mozRequestFullScreen();
					} else if (elem.requestFullScreen) {
						elem.requestFullscreen();
					}

					iconElem.addClass(SCREEN_REST).removeClass(SCREEN_FULL);
				} else {
					var elem = document;
					if (elem.webkitCancelFullScreen) {
						elem.webkitCancelFullScreen();
					} else if (elem.mozCancelFullScreen) {
						elem.mozCancelFullScreen();
					} else if (elem.cancelFullScreen) {
						elem.cancelFullScreen();
					} else if (elem.exitFullscreen) {
						elem.exitFullscreen();
					}

					iconElem.addClass(SCREEN_FULL).removeClass(SCREEN_REST);
				}
			}

			//弹出关于面板
			,
		about: function() {
				admin.popupRight({
					id: 'LAY_adminPopupAbout',
					success: function() {
						view(this.id).render('system/about');
					}
				});
			}

			//弹出更多面板
			,
		more: function() {
				admin.popupRight({
					id: 'LAY_adminPopupMore',
					success: function() {
						view(this.id).render('system/more');
					}
				});
			}

			//返回上一页
			,
		back: function() {
				history.back();
			}

			//主题设置
			,
		setTheme: function(othis) {
				var index = othis.data('index'),
					nextIndex = othis.siblings('.layui-this').data('index');

				if (othis.hasClass(THIS)) return;

				othis.addClass(THIS).siblings('.layui-this').removeClass(THIS);
				admin.initTheme(index);
			}

			//左右滚动页面标签
			,
		rollPage: function(type, index) {
				var tabsHeader = $('#LAY_app_tabsheader'),
					liItem = tabsHeader.children('li'),
					scrollWidth = tabsHeader.prop('scrollWidth'),
					outerWidth = tabsHeader.outerWidth(),
					tabsLeft = parseFloat(tabsHeader.css('left'));

				//右左往右
				if (type === 'left') {
					if (!tabsLeft && tabsLeft <= 0) return;

					//当前的left减去可视宽度，用于与上一轮的页标比较
					var prefLeft = -tabsLeft - outerWidth;

					liItem.each(function(index, item) {
						var li = $(item),
							left = li.position().left;

						if (left >= prefLeft) {
							tabsHeader.css('left', -left);
							return false;
						}
					});
				} else if (type === 'auto') { //自动滚动
					(function() {
						var thisLi = liItem.eq(index),
							thisLeft;

						if (!thisLi[0]) return;
						thisLeft = thisLi.position().left;

						//当目标标签在可视区域左侧时
						if (thisLeft < -tabsLeft) {
							return tabsHeader.css('left', -thisLeft);
						}

						//当目标标签在可视区域右侧时
						if (thisLeft + thisLi.outerWidth() >= outerWidth - tabsLeft) {
							var subLeft = thisLeft + thisLi.outerWidth() - (outerWidth - tabsLeft);
							liItem.each(function(i, item) {
								var li = $(item),
									left = li.position().left;

								//从当前可视区域的最左第二个节点遍历，如果减去最左节点的差 > 目标在右侧不可见的宽度，则将该节点放置可视区域最左
								if (left + tabsLeft > 0) {
									if (left - tabsLeft > subLeft) {
										tabsHeader.css('left', -left);
										return false;
									}
								}
							});
						}
					}());
				} else {
					//默认向左滚动
					liItem.each(function(i, item) {
						var li = $(item),
							left = li.position().left;

						if (left + li.outerWidth() >= outerWidth - tabsLeft) {
							tabsHeader.css('left', -left);
							return false;
						}
					});
				}
			}

			//向右滚动页面标签
			,
		leftPage: function() {
				events.rollPage('left');
			}

			//向左滚动页面标签
			,
		rightPage: function() {
				events.rollPage();
			}

			//关闭当前标签页
			,
		closeThisTabs: function() {
				admin.closeThisTabs();
			}

			//关闭其它标签页
			,
		closeOtherTabs: function(type) {
				var TABS_REMOVE = 'LAY-system-pagetabs-remove';
				if (type === 'all') {
					$(TABS_HEADER + ':gt(0)').remove();
					$(APP_BODY).find('.' + TABS_BODY + ':gt(0)').remove();

					$(TABS_HEADER).eq(0).trigger('click');
				} else {
					$(TABS_HEADER).each(function(index, item) {
						if (index && index != admin.tabsPage.index) {
							$(item).addClass(TABS_REMOVE);
							admin.tabsBody(index).addClass(TABS_REMOVE);
						}
					});
					$('.' + TABS_REMOVE).remove();
				}
			}

			//关闭全部标签页
			,
		closeAllTabs: function() {
				events.closeOtherTabs('all');
				//location.hash = '';
			}

			//遮罩
			,
		shade: function() {
				admin.sideFlexible();
			}

			//呼出IM 示例
			,
		im: function() {
			admin.popup({
				id: 'LAY-popup-layim-demo' //定义唯一ID，防止重复弹出
					,
				shade: 0,
				area: ['800px', '300px'],
				title: '面板外的操作示例',
				offset: 'lb',
				success: function() {
					//将 views 目录下的某视图文件内容渲染给该面板
					layui.view(this.id).render('layim/demo').then(function() {
						layui.use('im');
					});
				}
			})
		}
	};

	//初始
	! function() {
		//主题初始化，本地主题记录优先，其次为 initColorIndex
		var local = layui.data(setter.tableName);
		if (local.theme) {
			admin.theme(local.theme);
		} else if (setter.theme) {
			admin.initTheme(setter.theme.initColorIndex);
		}

		//常规版默认开启多标签页
		if (!('pageTabs' in layui.setter)) layui.setter.pageTabs = true;

		//不开启页面标签时
		if (!setter.pageTabs) {
			$('#LAY_app_tabs').addClass(HIDE);
			container.addClass('layadmin-tabspage-none');
		}

		//低版本IE提示
		if (device.ie && device.ie < 10) {
			view.error('IE' + device.ie + '下访问可能不佳，推荐使用：Chrome / Firefox / Edge 等高级浏览器', {
				offset: 'auto',
				id: 'LAY_errorIE'
			});
		}

	}();

	//admin.prevRouter = {}; //上一个路由

	//监听 tab 组件切换，同步 index
	element.on('tab(' + FILTER_TAB_TBAS + ')', function(data) {
		admin.tabsPage.index = data.index;
	});

	//监听选项卡切换，改变菜单状态
	admin.on('tabsPage(setMenustatus)', function(router) {
		var pathURL = router.url,
			getData = function(item) {
				return {
					list: item.children('.layui-nav-child'),
					a: item.children('*[lay-href]')
				}
			},
			sideMenu = $('#' + SIDE_MENU),
			SIDE_NAV_ITEMD = 'layui-nav-itemed'

			//捕获对应菜单
			,
			matchMenu = function(list) {
				list.each(function(index1, item1) {
					var othis1 = $(item1),
						data1 = getData(othis1),
						listChildren1 = data1.list.children('dd'),
						matched1 = pathURL === data1.a.attr('lay-href');

					listChildren1.each(function(index2, item2) {
						var othis2 = $(item2),
							data2 = getData(othis2),
							listChildren2 = data2.list.children('dd'),
							matched2 = pathURL === data2.a.attr('lay-href');

						listChildren2.each(function(index3, item3) {
							var othis3 = $(item3),
								data3 = getData(othis3),
								matched3 = pathURL === data3.a.attr('lay-href');

							if (matched3) {
								var selected = data3.list[0] ? SIDE_NAV_ITEMD : THIS;
								othis3.addClass(selected).siblings().removeClass(selected); //标记选择器
								return false;
							}

						});

						if (matched2) {
							var selected = data2.list[0] ? SIDE_NAV_ITEMD : THIS;
							othis2.addClass(selected).siblings().removeClass(selected); //标记选择器
							return false
						}

					});

					if (matched1) {
						var selected = data1.list[0] ? SIDE_NAV_ITEMD : THIS;
						othis1.addClass(selected).siblings().removeClass(selected); //标记选择器
						return false;
					}

				});
			}

		//重置状态
		sideMenu.find('.' + THIS).removeClass(THIS);

		//移动端点击菜单时自动收缩
		if (admin.screen() < 2) admin.sideFlexible();

		//开始捕获
		matchMenu(sideMenu.children('li'));
	});

	//监听侧边导航点击事件
	element.on('nav(layadmin-system-side-menu)', function(elem) {
		if (elem.siblings('.layui-nav-child')[0] && container.hasClass(SIDE_SHRINK)) {
			admin.sideFlexible('spread');
			layer.close(elem.data('index'));
		};
		admin.tabsPage.type = 'nav';
	});

	//监听选项卡的更多操作
	element.on('nav(layadmin-pagetabs-nav)', function(elem) {
		var dd = elem.parent();
		dd.removeClass(THIS);
		dd.parent().removeClass(SHOW);
	});

	//同步路由
	var setThisRouter = function(othis) {
			var layid = othis.attr('lay-id'),
				attr = othis.attr('lay-attr'),
				index = othis.index();

			admin.tabsBodyChange(index, {
				url: attr
			});
			//location.hash = layid === setter.entry ? '/' : attr;
		},
		TABS_HEADER = '#LAY_app_tabsheader>li';

	//标签页标题点击
	$body.on('click', TABS_HEADER, function() {
		var othis = $(this),
			index = othis.index();

		admin.tabsPage.type = 'tab';
		admin.tabsPage.index = index;

		setThisRouter(othis);
	});

	//监听 tabspage 删除
	element.on('tabDelete(' + FILTER_TAB_TBAS + ')', function(obj) {
		var othis = $(TABS_HEADER + '.layui-this');

		obj.index && admin.tabsBody(obj.index).remove();
		setThisRouter(othis);

		//移除resize事件
		admin.delResize();
	});

	//页面跳转
	$body.on('click', '*[lay-href]', function() {
		var othis = $(this),
			href = othis.attr('lay-href'),
			text = othis.attr('lay-text'),
			router = layui.router();

		admin.tabsPage.elem = othis;
		//admin.prevRouter[router.path[0]] = router.href; //记录上一次各菜单的路由信息

		//执行跳转
		var topLayui = parent === self ? layui : top.layui;
		topLayui.index.openTabsPage(href, text || othis.text());
	});

	//点击事件
	$body.on('click', '*[layadmin-event]', function() {
		var othis = $(this),
			attrEvent = othis.attr('layadmin-event');
		events[attrEvent] && events[attrEvent].call(this, othis);
	});

	//tips
	$body.on('mouseenter', '*[lay-tips]', function() {
		var othis = $(this);

		if (othis.parent().hasClass('layui-nav-item') && !container.hasClass(SIDE_SHRINK)) return;

		var tips = othis.attr('lay-tips'),
			offset = othis.attr('lay-offset'),
			direction = othis.attr('lay-direction'),
			index = layer.tips(tips, this, {
				tips: direction || 1,
				time: -1,
				success: function(layero, index) {
					if (offset) {
						layero.css('margin-left', offset + 'px');
					}
				}
			});
		othis.data('index', index);
	}).on('mouseleave', '*[lay-tips]', function() {
		layer.close($(this).data('index'));
	});

	//窗口resize事件
	var resizeSystem = layui.data.resizeSystem = function() {
		//layer.close(events.note.index);
		layer.closeAll('tips');

		if (!resizeSystem.lock) {
			setTimeout(function() {
				admin.sideFlexible(admin.screen() < 2 ? '' : 'spread');
				delete resizeSystem.lock;
			}, 100);
		}

		resizeSystem.lock = true;
	}
	$win.on('resize', layui.data.resizeSystem);

	//接口输出
	exports('admin', admin);
});
